iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0
Cloud Native

【하나, 둘, ready, get set, go】系列 第 23

【하나, 둘, ready, get set, go】Day 23 - 使用 GORM 對 SQL 資料庫進行刪除資料 (Delete)

  • 分享至 

  • xImage
  •  

前情提要

前面幾天介紹了如何使用 GORM 來實作新增 (Create)、讀取 (Read)、更新 (Update)

今天要來將 CRUD 中的最後一個,也就是 Delete 刪除功能來實作出來~

實際操作

我們回到 repository/album.go,這邊我預想刪除的情況有兩種

  1. 單筆刪除
  2. 全部刪除

下面就來分別實作出來吧

單筆刪除

透過 GORM 提供的 Delete 來將用 id 找到的 Album struct 物件從 SQL 資料庫中進行刪除

// Delete 刪除資料
func Delete(id string) {
    database.DB.Delete(&database.Album{ID: id})
}

全部刪除

由於 GORM 似乎沒有提供批次刪除的 method,所以就只好從根本來實作了

實作思路其實很簡單,就是先將全部資料撈出來,再用 for loop 逐一進行刪除

全部資料撈出來的部分,可以使用 Day 21 實作好的 ReadAll() 來達成

// DeleteAll 刪除全部資料
func DeleteAll() error {
    all, err := ReadAll()
    if err != nil {
        return err
    } else {
        for _, v := range all {
            database.DB.Delete(&v)
        }
    }
    return err
}

實際呼叫

回到 main.go

下面就來個別使用看看,前面的 Code 就不贅述了
因為都跟前面的一樣,有需要的可以自行到前一天來做觀看

下面就以主要部分來做說明

單筆刪除

// 這邊的 album 變數,是在前面宣告的

repository.Delete(album.ID)

全部刪除

err := repository.DeleteAll()
if err != nil {
    panic(err)
}

執行後,就可以將 album 變數輸出出來,確認是否有刪除成功啦~

https://ithelp.ithome.com.tw/upload/images/20230910/20140363Tj9gwLIIHB.png

⬆️ 前面三個輸出結果分別是 ReadAllReadUpdate 的,最後一個輸出結果是執行 DeleteAll 後再透過 ReadAll 去確認是否有確實進行資料刪除的

以上 Sample Code 可以在我 GitHub 上找到
https://github.com/leoho0722/it15th

總結

今天我們透過 GORM 來實作向 SQL 資料庫進行刪除資料

在這四天分別介紹了如何透過 GORM 來實作資料庫的 CRUD

接下來就要來透過 Gin 來開發 Web Backend API 並跟 SQL 資料庫操作進行整合

那麼就明天見啦~


上一篇
【하나, 둘, ready, get set, go】Day 22 - 使用 GORM 對 SQL 資料庫進行更新資料 (Update)
下一篇
【하나, 둘, ready, get set, go】Day 24 - 使用 Gin 撰寫第一支 Web Backend API
系列文
【하나, 둘, ready, get set, go】30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言